home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / MAPEDIT.ZIP / SAMPGAME / CYBER.C < prev    next >
C/C++ Source or Header  |  1993-05-13  |  4KB  |  189 lines

  1. #include "cyber.h"
  2.  
  3. struct token_struct area[99]={
  4. {0,0,0,0,0},
  5. {241,255,145,159,2}, /*up*/
  6. {225,239,161,175,3}, /*left */
  7. {257,271,161,175,4}, /*right*/
  8. {241,255,177,191,5}, /*down*/
  9. {241,255,161,175,1}, /*middle*/
  10. {0,0,0,0,0}
  11. };
  12.  
  13. unsigned int num_tokens=5;
  14.  
  15. main()
  16. {
  17.  
  18.     char temps[128];
  19.     unsigned int x,y;
  20.     unsigned int token;
  21.  
  22.     if(!mousecheck())
  23.     {
  24.         printf("\nPlease install mouse driver!");
  25.         exit(0);
  26.     }
  27.     if(! (bufptr = (char far *)malloc(64001)))
  28.     {
  29.         printf("\nError allocating memory to bufptr.");
  30.         exit(0);
  31.     }
  32.     if(! (mapptr = (unsigned int far *)malloc(64001)))
  33.     {
  34.         printf("\nError allocating memory to mapptr.");
  35.         exit(0);
  36.     }
  37.     if(! (csptr = (unsigned char far *)malloc(64001)))
  38.     {
  39.         printf("\nError allocating memory to csptr.");
  40.         exit(0);
  41.     }
  42.     load_db();
  43.     vmode(0x13);
  44.     load_pcx("openscrn.pcx",bufptr);
  45.     show_screen();
  46.     load_map();
  47.     pause();
  48.     cls();
  49.     load_pcx("cyber.pcx",bufptr);
  50.     load_pcx("chset.pcx",csptr);
  51.     show_screen();
  52.     make_map();
  53.     show_map();
  54.     mousecursor(1);
  55.     for(;;)
  56.     {
  57.         x=mousecol();
  58.         y=mouserow();
  59.         sprintf(temps,"X: %3d Y: %3d",x,y);
  60.         putxys(25,1,temps);
  61.         if(kbhit())
  62.         {
  63.             switch(toupper(getch()))
  64.             {
  65.             case 0:
  66.                 switch(getch())
  67.                 {
  68.                 case 45:   /* alt-x */
  69.                     token=1;
  70.                     break;
  71.                 }
  72.                 break;
  73.             }
  74.             do_token(token);
  75.         }
  76.         if (mousebuttons())
  77.         {
  78.             do_token(chkmouse(x,y));
  79.         }
  80.     }
  81. }
  82.  
  83. unsigned int chkmouse(unsigned int x,unsigned int y)
  84. {
  85.     unsigned int token,loop;
  86.  
  87.     token=0;
  88.     for(loop=1;loop<num_tokens+1;loop++)
  89.     {
  90.         if(x>area[loop].minx && x<area[loop].maxx && y>area[loop].miny && y < area[loop].maxy)
  91.             token=area[loop].token;
  92.     }
  93.     return(token);
  94. }
  95.  
  96. do_token(unsigned int token)
  97. {
  98.     if(!token)
  99.         return;
  100.     switch(token)
  101.     {
  102.         case 1:
  103.             exit_prog();
  104.             break;
  105.         case 2:
  106.             up();
  107.             break;
  108.         case 3:
  109.             left();
  110.             break;
  111.         case 4:
  112.             right();
  113.             break;
  114.         case 5:
  115.             down();
  116.             break;
  117.     }
  118. }
  119.  
  120. wprintf(char *format,...)
  121. {
  122.     char buffer[255];
  123.     va_list argument_ptr;
  124.  
  125.     va_start(argument_ptr,format);
  126.     vsprintf(buffer,format,argument_ptr);
  127.     scrollw();
  128.     putxys(25,16,buffer);
  129. }
  130.  
  131. scrollw()
  132. {
  133.     unsigned int loop;
  134.  
  135.     for(loop=TWOYS;loop<TWOYE-8;loop++)
  136.     {
  137.         memcpy(scrptr+loop*320+TWOXS,scrptr+(loop+8)*320+TWOXS,TWOXE-TWOXS+1);
  138.     }
  139.     for(loop=TWOYE-8;loop<TWOYE;loop++)
  140.     {
  141.         memset(scrptr+loop*320+TWOXS,0,TWOXE-TWOXS+1);
  142.     }
  143. }
  144.  
  145. pause()
  146. {
  147.     for(;;)
  148.     {
  149.         if(kbhit())
  150.         {
  151.             getch();
  152.             break;
  153.         }
  154.         if(mousebuttons())
  155.             break;
  156.     }
  157. }
  158.  
  159. cls()
  160. {
  161.     memset(scrptr,0,64000);
  162. }
  163.  
  164. load_db()
  165. {
  166.     FILE * fptr;
  167.     int loop;
  168.  
  169.     if(!(fptr=fopen("sprites.dat","rb")))
  170.     {
  171.         printf("could not open Sprite Data file !");
  172.         exit(0);
  173.     }
  174.     fread(&db,sizeof(db),1,fptr);
  175.     fread(&si[0],sizeof(struct sprite_struct),100,fptr);
  176.     for(loop=0;loop<db.num_sprites;loop++)
  177.     {
  178.         if(!(si[loop].pict=(char far *) malloc(si[loop].width*si[loop].height)))
  179.         {
  180.             vmode(3);
  181.             printf("Error Allocating memory for sprite %d!",loop);
  182.             exit;
  183.         }
  184.         fread(si[loop].pict,si[loop].width*si[loop].height,1,fptr);
  185.     }
  186. }
  187.  
  188.  
  189.